%======================================================================
%----------------------------------------------------------------------
%               XX                           X
%                                            X
%               XX    XXX   XXX   XXX   XXX  X  XXXX
%                X   X   X X   X X   X X   X X X
%                X   XXXXX XXXXX XXXXX X     X  XXX
%                X   X     X     X     X   X X     X
%               XXX   XXX   XXX   XXX   XXX  X XXXX
%----------------------------------------------------------------------
%               SPECIFICATION FOR COMMON IEEE STYLES
%----------------------------------------------------------------------
%               Gregory L. Plett, Istv\'{a}n Koll\'{a}r.
%======================================================================
\documentclass[%
    %draft,
    %submission,
    %compressed,
    a4paper,
    %12pt,
    10pt,
    final,
    %technote,
    %internal,
    %submitted,
    %inpress,
    %reprint,
    %titlepage,
    notitlepage,
    %anonymous,
    narroweqnarray,
    inline,
    oneside,
    %invited,
    %conference
    article
    ]{ieee}

%\documentclass[a4paper,12pt]{article}
\usepackage[spanish]{babel}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsfonts}
\usepackage{graphicx}
\usepackage{epsfig}
\usepackage{epstopdf}

\newcommand{\latexiie}{\LaTeX2{\Large$_\varepsilon$}}

%\usepackage{ieeetsp}    % if you want the "trans. sig. pro." style
%\usepackage{ieeetc}    % if you want the "trans. comp." style
%\usepackage{ieeeimtc}    % if you want the IMTC conference style

% Use the `endfloat' package to move figures and tables to the end
% of the paper. Useful for `submission' mode.
%\usepackage {endfloat}

% Use the `times' package to use Helvetica and Times-Roman fonts
% instead of the standard Computer Modern fonts. Useful for the
% IEEE Computer Society transactions.
%\usepackage{times}
% (Note: If you have the commercial package `mathtime,' (from
% y&y (http://www.yandy.com), it is much better, but the `times'
% package works too). So, if you have it...
%\usepackage {mathtime}

% for any plug-in code... insert it here. For example, the CDC style...
%\usepackage{ieeecdc}

\begin{document}

%----------------------------------------------------------------------
% Title Information, Abstract and Keywords
%----------------------------------------------------------------------
\title[]{
  Trabajo Pr\'actico Especial 2: Redes Neuronales}

% format author this way for journal articles.
% MAKE SURE THERE ARE NO SPACES BEFORE A \member OR \authorinfo
% COMMAND (this also means `don't break the line before these
% commands).
%\author[PLETT AND KOLL\'{A}R]{Gregory L. Plett\member{Student
%       Member},\authorinfo{G.\,L.\,Plett is with the Department of Electrical
%       Engineering, Stanford University, Stanford, CA 94305--9510.
%       Phone: $+$1\,650\,723--4769, e-mail: glp@simoon.stanford.edu}%
%\and{}and Istv\'{a}n Koll\'{a}r\member{Fellow}\authorinfo{I.\
%       Koll\'{a}r is with the Department of Measurement and Information
%       Systems, Technical University of Budapest, 1521 Budapest, Hungary.
%       Phone: $+$\,36\,1\,463--1774, fax: +\,36\,1\,463--4112,
%       e-mail: kollar@mmt.bme.hu}
%}
\author{
     Alan Idesis,
\and Mar\'ia Eugenia Cura,
\and Tom\'as Alvarez
}

% format author this way for conference proceedings
%\author[PLETT AND KOLL\'{A}R]{%
        %Gregory L. Plett\member{Student Member},\authorinfo{%
        %Department of Electrical Engineering,\\
        %Stanford University, Stanford, CA 94305-9510.\\
        %Phone: $+$1\,650\,723-4769, email: glp@simoon.stanford.edu}%
%\and{}and%
%\and{}Istv\'{a}n Koll\'{a}r\member{Fellow}\authorinfo{%
        %Department of Measurement and Instrument Engineering,\\
        %Technical University of Budapest, 1521 Budapest, Hungary.\\
        %Phone: $+$\,36\,1\,463-1774, fax: +\,36\,1\,463-4112,
        %email: kollar@mmt.bme.hu}
%}

%\journal{IEEE Trans.\ on Instrum.\ Meas.}
%\titletext{, VOL.\ 46, NO.\ 6, DECEMBER\ 1997}
%\ieeecopyright{0018--9456/97\$10.00 \copyright\ 1997 IEEE}
%\lognumber{xxxxxxx}
%\pubitemident{S 0018--9456(97)09426--6}
%\loginfo{Manuscript received September 27, 1997.}
%\firstpage{1217}

%\confplacedate{Ottawa, Canada, May 19--21, 1997}

\maketitle

%\begin{keywords}
%Style file, \latexiie, Microsoft Word, IEEE Publications, Instrumentation
%and Measurement Technology Conference, IMTC.
%\end{keywords}

%----------------------------------------------------------------------
% SECTION I: Introduction
%----------------------------------------------------------------------
\section{Introducci\'on}

\PARstart En el presente trabajo se detalla la implementaci\'on de una red neuronal multicapa con aprendizaje supervisado que realiza la estimaci\'on de funciones escalares ($f: \Re^2 \rightarrow \Re$) a partir de un conjunto de puntos que las representan. 
Para esto se ha implementado un perceptr\'on multicapa en \textit{MATLAB}, compatible con \textit{Octave}.

En la secci\'on II se exponen las consideraciones que han sido tomadas en cuenta al dise\~nar y entrenar la red neuronal. En la secci\'on III se describen los resultados obtenidos con distintas configuraciones y arquitecturas como asi tambi\'en las conclusiones alcanzadas.

\section{Desarrollo}
Los par\'ametros que se han considerado son los siguientes:
\begin{itemize}
 \item $\eta$: Constante de proporcionalidad del aprendizaje.
 \item $g(h)$: Funci\'on de activaci\'on.
 \item $M$: Cantidad de patrones utilizados para el entrenamiento de la red.
 \item $E$: Error cuadr\'atico medio.
 \item $b$: Vector de salidas deseadas de la red.
 \item $\alpha$: Momentum.
 \item $a$: Magnitud con la que aumenta $\eta$ para el $\eta$ adaptativo.
 \item $b$: Porcentaje en el que se disminuye $\eta$ para el $\eta$ adaptativo.
\end{itemize}


El conjunto de datos que se utiliza para este problema particular es el que se puede observar en la Figura \ref{fig1}. 

Dado que la $f: \Re^2 \rightarrow \Re$, se utiliza una red neuronal con exactamente dos entradas y una salida. Tanto la cantidad de capas ocultas como la cantidad de neuronas que posee cada una de estas capas se fue modificando para observar los resultados obtenidos con cada una de las configuraciones. Esto se analiza en detalle en la pr\'oxima secci\'on.

\subsection{Funciones de activaci\'on}
Las funciones de activaci\'on que se consideraron para el entrenamiento de la red son una tangencial hiperb\'olica y una exponencial:
\begin{eqnarray}
g(h) & = & tanh(\beta h)\label{fn_activ1}\\
g(h) & = & (1+e^{(-2\beta h)})^{-1}\label{fn_activ2}
\end{eqnarray}



\begin{figure}
    \centering
    \includegraphics[width=10cm]{original.png}
        \caption{Muestreo original}
        \label{fig1}
\end{figure}


El par\'ametro $\beta$ que se observa en las diferentes $g(h)$ es una constante. En (\ref{fn_activ1}), por ejemplo, mientras m\'as grande es dicho valor, m\'as se acerca a la funci\'on escal\'on. 

Se puede apreciar que tanto (\ref{fn_activ1}) como (\ref{fn_activ2}) son funciones diferenciables y acotadas, 
$g(h) \in [ - 1, 1]$ para (\ref{fn_activ1}) y $g(h) \in [0, 1]$ para (\ref{fn_activ2}).

En todas las capas de la red se utiliza una \'unica funci\'on de activaci\'on ya sea (\ref{fn_activ1}) o  (\ref{fn_activ2}), 
y nunca combinaciones entre ellas en las diferentes capas. En la \'ultima capa, la unidad de salida, 
se utiliza (\ref{fn_activ1}) ya que la salida de la funci\'on escalar a estimar est\'a acotada entre -1 y 1.


\subsection{Elecci\'on de los patrones de entrenamiento}
La elecci\'on de los patrones de entrenamiento es crucial, ya que una mala elecci\'on de los mismos 
puede dar como resultado una red que no puede generalizar correctamente o inclusive no memorizar los patrones de entrenamiento
con buena precisi\'on. Para este caso en particular, se analiz\'o la Figura \ref{fig1} y se observ\'o que las mayores
perturbaciones de la funci\'on se daban en el area comprendida por:

\begin{equation*}
\begin{cases} 
|x| \leq 1.5  \\ |y| \leq 1.5
\end{cases}
\end{equation*}

Por lo tanto se adopt\'o la decisi\'on de tomar la mayor concentraci\'on de patrones en esa \'area, dejando aproximadamente
un $20\%$ de patrones para testeo. Luego se tomaron patrones distribuidos uniformemente alrededor del borde para evitar
que se produzcan ondulaciones en dicho borde cuando la red generalice.

\subsection{Algoritmos de mejora}
Se implementaron tres mejoras sobre el algoritmo de \textit{backpropagation}. A continuaci\'on 
se explica cada uno de ellos y en la pr\'oxima secci\'on se analizan las mejoras en los resultados al utilizarlos.

\subsubsection{$\eta$ adaptativo}
Esta mejora consiste en hacer que el $\eta$, o \textit{learning rate}, se adapte al nivel de aprendizaje 
en el que se encuentra la red. Esto es importante ya que un $\eta$ peque\~no hace que la red 
aprenda a una velocidad muy lenta, requiriendo una mayor cantidad de \'epocas para alcanzar mejores \'ordenes de precisi\'on
y por ende m\'as tiempo, mientras que un $\eta$ grande puede hacer que el error comience a oscilar o incluso diverger. Es posible adem\'as, que un $\eta$ que inicialmente es bueno, con el paso de las \'epocas comience a oscilar o diverger cuando el error cuadr\'atico medio disminuye.

Con esta mejora se logra que el $\eta$ se vaya adaptando a las ``necesidades'' de la red en la \'epoca 
en la que se encuentra, dependiendo del error que ha cometido. 
En esta implementaci\'on se toma la diferencia entre los $E$ de la \'epoca actual y la anterior. 
Si el $\Delta E < 0$, entonces se aumenta el $\eta$ con una constante $a$. 
Si el $\Delta E > 0$, se decrementa un porcentaje $b$ de $\eta$. En caso en que $\Delta E = 0$, 
no se modificar\'a el valor del $\eta$. De esta forma se logra mejorar el algoritmo de \textit{backpropagation}.

\subsubsection{Momentum}
La idea de esta mejora consiste en agregar informaci\'on de la actualizaci\'on previa de pesos a la actual. 
Se suma un t\'ermino en la actualizaci\'on que introduce a cada conexi\'on una inercia para que los pesos 
cambien su direcci\'on en el sentido de la fuerza promedio que reciben, en vez de oscilar. 
Esta inercia, o \textit{Momentum}, incrementa el ritmo de aprendizaje de la red de la misma forma que 
lo hace el $\eta$ al incrementarlo pero no produce oscilaciones divergentes en el error. 

Para realizar el ajuste se multiplica a la actualizaci\'on previa de pesos una constante $\alpha$ 
tal que $0 \leq \alpha \leq 1$.

\subsubsection{Variaci\'on de 0.1 a la derivada}
Esta mejora consiste en sumarle 0.1 a la derivada de la funci\'on de activaci\'on $g$ en el c\'alculo 
de los errores obtenidos, $\delta_i$. De esta forma se agrega una peque\~na perturbaci\'on 
a los errores para mantener $\delta \neq 0$ sin importar que el valor absoluto de la suma pesada de la unidad $i$ 
sea grande.


\subsection{Rollback de pesos}
Se implement\'o tambi\'en un m\'etodo de ajuste para disminuir el error. Al finalizar cada \'epoca, 
se calcula el error cuadr\'atico medio de la misma y se compara con el de la \'epoca anterior. 
Si el error de la \'epoca actual es superior al error calculado de la \'epoca anterior, 
se descarta la actualizaci\'on de pesos de la \'epoca actual. 
De esta forma se realiza un \textit{rollback} de los pesos y se restauran los de la anterior. 
Finalmente se ajusta el valor de $\eta$ como corresponda y se comienza una nueva \'epoca con los pesos restaurados 
y el valor de $\eta$ corregido. De \'esta forma se elimina cualquier posibilidad de oscilaci\'on de $E$ que pudiera
ocurrir.


\section{Resultados y conclusiones}
En esta secci\'on se exponen y analizan los resultados obtenidos al entrenar la red neuronal 
con distintas configuraciones. Se describen tambi\'en los razonamientos y conclusiones obtenidas 
a partir de los resultados y se realizan comparaciones entre distintas arquitecturas.

Se considera una arquitectura $[T_1-T_2-...-1]$ siendo $T_i$ la cantidad de neuronas en la \textit{i-\'esima} 
capa oculta y 1 la \'unica neurona en la capa de salida.

El error cuadr\'atico medio $E$ que se utiliza como condici\'on de corte para todas las configuraciones es $0.001$. 
La cantidad de \'epocas para el corte son 10000.

La cantidad de patrones $M$ de entrenamiento utilizados es siempre 342, lo cual es aproximadamente un $80\%$ de los 441 
que hay en total.

Los patrones elegidos se pueden observar en la Figura \ref{patrones}. 
En la Figura \ref{patrones_arriba} se puede observar la distribuci\'on elegida con respecto a los ejes $x, y$ 
mientras que en la Figura \ref{patrones_costado} se puede observar un corte lateral $y,z$.

\begin{figure}
    \centering
    \includegraphics[width=9cm]{patrones.png}
        \caption{Patrones de entrenamiento}
        \label{patrones}
\end{figure}

\begin{figure}
    \centering
    \includegraphics[width=9cm]{patrones_arriba.png}
        \caption{Patrones de entrenamiento: vista superior corte $x,y$}
        \label{patrones_arriba}
\end{figure}

\begin{figure}
    \centering
    \includegraphics[width=9cm]{patrones_costado.png}
        \caption{Patrones de entrenamiento: vista lateral corte $y,z$}
        \label{patrones_costado}
\end{figure}


\subsection{Comparaci\'on de arquitecturas}

En esta configuraci\'on se mantuvieron los siguientes par\'ametros fijos y se variaron las arquitecturas para observar las diferencias.
\begin{itemize}
 \item $g(h)=(1+e^{(-2\beta h)})^{-1}$
 \item $\beta=1.8$
 \item $\eta=0.0001$
 \item \textbf{Mejoras:}
 \begin{enumerate}
 \item \textit{Rollback}
 \item \textit{Momentum}: $\alpha=0.9$
 \item $\eta$ adaptativo: $a=0.001 , b=0.01$
 \item Variaci\'on de 0.1 a la derivada
 \end{enumerate}
\end{itemize}

Los resultados corresponden a las siguientes arquitecturas:

\textbf{Arquitecturas}
 \begin{enumerate}
 \item \textbf{A:} $=[20-20-1]$
 \item \textbf{B:} $=[7-9-1]$
 \item \textbf{C:} $=[40-1]$
 \item \textbf{D:} $=[30-30-1]$
 \end{enumerate}


En la Figura \ref{fig1_tot} se pueden observar los resultados de la generalizaci\'on de las diferentes arquitecturas. 
En estos gr\'aficos vemos como las arquitecturas A y D dan resultados muy similares al generalizar. 
Por el otro lado, en los resultados de las arquitecturas B y C se puede ver un ``oleaje'' 
en los bordes de la funci\'on estimada. 

Al mismo tiempo, si se observa la Figura \ref{fig1_err} se puede ver que la superficie del error 
en la arquitectura B es la que mayor cantidad y m\'as altos picos presenta, a\'un en las esquinas del dominio 
de la funci\'on, lo cual explica la forma ondulada de la salida de la red en los extremos. La arquitectura A 
es la que mejores resultados muestra en este gr\'afico ya que presenta una menor cantidad de picos, 
concentrados en las \'areas problem\'aticas del dataset original.

La Figura \ref{fig1_ep} representa los errores por \'epoca de cada una de las arquitecturas. 
Analizando el error por \'epoca se puede observar que la arquitectura B se mantuvo casi siempre constante, 
reduciendo muy poco el error en las primeras 500 \'epocas y estancandose en un error de 0.4. 
La arquitectura C por el otro lado comienza con un error muy alto y se va reduciendo desde 1.20 a 0.25 
en las primeras 3000 \'epocas. Las arquitecturas A y D comienzan con un error ligeramente mayor 
que la arquitectura B y se reduce r\'apidamente a 0.09 en las primeras 500 \'epocas.


\subsection{Comparaci\'on de Mejoras en Backpropagation}
En esta secci\'on se muestran los resultados obtenidos de la comparaci\'on entre configuraciones
id\'enticas con la salvedad en que en una de ellas se le deshabilitaron las mejoras implementadas
sobre el algoritmo de \textit{backpropagation}. Los par\'ametros fijos usados
para comparar las configuraciones fueron:

\begin{itemize}
 \item $g(h)=(1+e^{(-2\beta h)})^{-1}$
 \item $\beta=1.8$
 \item $\eta=0.0001$
 \item \textit{Arquitectura} $=[20-20-1]$
\end{itemize}

En la Figura \ref{fig2_1}, en la configuraci\'on que no tiene habilitadas las mejoras, se pueden apreciar oscilaciones en el error
cuadr\'atico medio durante el transcurso del entrenamiento.
Esto era de esperarse ya que al quitar el $\eta$ adaptativo, cuando se alcanza cierta precisi\'on, el valor de $\eta$ puede
resultar inadecuadamente grande y desajustar los pesos de la red, haciendo que se pierda precisi\'on o incluso que comience
a diverger, algo que no sucedi\'o en \'esta comparaci\'on.

Si bien se produjeron bastantes oscilaciones, la configuraci\'on sin mejoras logr\'o alcanzar una mejor precisi\'on en menor
cantidad de \'epocas, lo cual pudo haber ocurrido debido a la aleatoridad de los pesos iniciales.

Por otro lado, si bien se esperaba que durante el entrenamiento la red pudiera estancarse en alg\'un m\'inimo local durante por lo menos 100 
\'epocas por no tener habilitada ninguna mejora, \'esto no ocurri\'o. 

\subsection{Comparaci\'on entre funciones de activaci\'on}

En esta secci\'on se comparan los resultados para una misma configuraci\'on utilizando distintas funciones
de activaci\'on, siendo \'estas (\ref{fn_activ1}) y (\ref{fn_activ2}). Los par\'ametros que quedaron
fijos en ambas configuraciones son:

\begin{itemize}
 \item $\beta=1.8$
 \item $\eta=0.0001$
 \item \textit{Arquitectura} $=[20-20-1]$
 \item \textbf{Mejoras:}
 \begin{enumerate}
 \item \textit{Rollback}
 \item \textit{Momentum}: $\alpha=0.9$
 \item $\eta$ adaptativo: $a=0.001 , b=0.01$
 \item Variaci\'on de 0.1 a la derivada
 \end{enumerate}
\end{itemize}

Los resultados pueden verse en la Figura \ref{fig3_1}. No se puede distinguir ninguna diferencia perceptible
entre ambas configuraciones. Tanto la superficie del error como la evoluci\'on de $E$ son similares, como as\'i tambi\'en lo es la 
generalizaci\'on de la red.

\subsection*{\textbf{Comentarios finales}}

Se puede concluir que las redes neuronales son capaces de aprender la funci\'on estudiada 
en este trabajo, pero las distintas arquitecturas y configuraciones de dichas redes son
las que nos permiten aprender el problema con una determinada precisi\'on y costo computacional. 

Es tambi\'en factible decir que las mayores imprecisiones en la generalizaci\'on 
de la red se encuentran en donde la funci\'on presenta las mayores perturbaciones, 
que son en el \textit{pico} y \textit{valle} de la Figura \ref{fig1}.

Luego de haberse probado las distintas arquitecturas expuestas en \'este informe, como as\'i tambi\'en
otras que est\'an por fuera del informe ya que sino ser\'ia muy extenso, se puede concluir que la arquitectura
\'optima en cuanto a precisi\'on alcanzada limitado a $10000$ \'epocas es la $[20-20-1]$.


\begin{thebibliography}{1}
\bibitem [1] {1}
Hertz J., Krogh A., Palmer R.G.,
\newblock {\em ntroduction to the theory of neural computation},
\newblock Westview Press,1991.
\end{thebibliography}

\clearpage
\onecolumn

%SEC 1
\begin{figure}
    \centering
    \includegraphics[width=18cm]{func_totales3.png}
        \caption{Generalizaciones del perceptr\'on multicapa para la configuraci\'on 1, con distintas arquitecturas}
        \label{fig1_tot}
\end{figure}

\begin{figure}
    \centering
    \includegraphics[width=18cm]{err_total3.png}
        \caption{Superficies de errores para la configuraci\'on 1, con distintas arquitecturas}
        \label{fig1_err}
\end{figure}

\begin{figure}
    \centering
    \includegraphics[width=18cm]{err_ep_total.png}
        \caption{Error por \'epoca para la configuraci\'on 1, con distintas arquitecturas}
        \label{fig1_ep}
\end{figure}


%SEC 2

\begin{figure}
    \centering
    \includegraphics[width=18cm]{err_epCONySIN.png}
        \caption{Error por \'epoca para configuraciones con y sin mejoras}
        \label{fig2_1}
\end{figure}

\begin{figure}
    \centering
    \includegraphics[width=8cm]{func_res2.png}
        \caption{Funci\'on obtenida para la configuraci\'on sin mejoras}
        \label{fig2_2}
\end{figure}

\begin{figure}
    \centering
    \includegraphics[width=8cm]{err_tot2.png}
        \caption{Superficie del error para la configuraci\'on sin mejoras}
        \label{fig2_3}
\end{figure}

%SEC 3
\begin{figure}
    \centering
    \includegraphics[width=18cm]{compEXPyTAN_con.png}
        \caption{Comparaci\'on entre funciones de activaci\'on}
        \label{fig3_1}
\end{figure}






%\begin{thebibliography}{2}
%\bibitem [1]{1} Apostol T.M., \textit{Volumen 1. Calculus. Segunda Edici\'on}, Reverté, 1982
%\bibitem [2]{2} Mathews J.H., Fink K.D., \textit{Métodos Numéricos con Matlab. Tercera Edici\'on}, Prentice Hall, 2003
%\end{thebibliography}

%----------------------------------------------------------------------

%\begin{biography}{Gregory L. Plett}
%(S'97) was born in Ottawa, ON, in 1968. He received the B.Eng.\ degree
%in computer systems engineering with high distinction from Carleton
%University, Ottawa, in 1990, and the M.S.\ degree in electrical
%engineering from Stanford University, CA, in 1992.  He is currently a
%Ph.D.\ candidate at Stanford University, where he is researching
%aspects of adaptive control under the supervision of Professor Bernard
%Widrow.
%\end{biography}


%\begin{biography}{Istv\'{a}n Koll\'{a}r}
%(M'87--SM'93--F'97) was born in Budapest, Hungary, in 1954. He graduated
%in electrical engineering from the Technical University of Budapest in
%1977 and in 1985 received the degree ``Candidate of Sciences'' (the
%equivalent of Ph.D.) from the Hungarian Academy of Sciences, and the
%degree dr.tech.\ from the Technical University of Budapest.
%\begin{thebibliography}{1}
%\bibitem [1]{1} Hertz J., Krogh A., Palmer R.G., \textit{Introduction to the theory of neural computation, Westview Press,1991}
%\bibitem [2]{2} Prueba Chi2: http://es.wikipedia.org/wiki/Prueba\_\%CF\%87\%C2\%B2
%\bibitem [3]{3} Prueba de Kolmog\'orov-Smirnov: http://es.wikipedia.org/wiki/Prueba\_de\_Kolmog\'orov-Smirnov
%\end{thebibliography}

%From September 1993 to June 1995, he was a Fulbright Scholar and
%visiting associate professor in the Department of Electrical
%Engineering, Stanford University. He is professor of electrical
%engineering, Department of Measurement and Information Systems,
%Technical University of Budapest. His research interests span the
%areas of digital and analog signal processing, measurement theory, and
%system identification. He has published about 50 scientific papers and
%is coauthor of the book \emph{Technology of Electrical Measurements},
%(L.\ Schnell, ed., Wiley, 1993). He authored the \emph{Frequency
%Domain System Identification Toolbox} for Matlab.
%\end{biography}

\end{document}